package com.linyaonan.leetcode.easy._530;

/**
 * 给定一个所有节点为非负值的二叉搜索树，求树中任意两节点的差的绝对值的最小值。
 *
 * 示例 :
 *
 * 输入:
 *
 *    1
 *     \
 *      3
 *     /
 *    2
 *
 * 输出:
 * 1
 *
 * 解释:
 * 最小绝对差为1，其中 2 和 1 的差的绝对值为 1（或者 2 和 3）。
 * 注意: 树中至少有2个节点。
 *
 *
 * @author: Lin
 * @date: 2020/1/1
 */
public class MinimumAbsolute {

    TreeNode pre = null;
    int maxValue = Integer.MAX_VALUE;

    public int getMinimumDifference(TreeNode root) {
        getTreeNode(root);
        return maxValue;
    }

    private void getTreeNode(TreeNode node) {
        if (node == null) {
            return;
        }
        getTreeNode(node.left);
        if(pre != null) {
            maxValue = Math.min(maxValue, node.val - pre.val);
        }
        pre = node;
        getTreeNode(node.right);
    }
}
